from operator import le
from re import M
n = int(input())
arr = [int(x) for x in input().split()]
left = [float('inf')] * n
right = [float('inf')] * n
if arr[0] == 0:
left[0] = 0
for i in range(1, n):
if arr[i] == 0:
left[i] = 0
else:
left[i] = left[i-1]+1
if arr[-1] == 0:
right[-1] = 0
for i in range(n-2, -1, -1):
if arr[i] == 0:
right[i] = 0
else:
right[i] = right[i+1]+1
for i in range(n):
print(min(left[i], right[i]), end=' ')
print()
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[200005], ans[200005], n;
int32_t main(){
cin>>n;
for(int i=1;i<=n;i++){cin>>a[i];}
for(int i=1;i<=n;i++)ans[i]=INT_MAX;
for(int i=1;i<=n;i++){
if(a[i])continue;
ans[i]=0;
int d=1;
for(int j=i+1;j<=n;j++){
if(ans[j]<d)break;
if(a[j]==0)break;
ans[j]=d;
d++;
}
d=1;
for(int j=i-1;j>=1;j--){
if(a[j]==0)break;
if(ans[j]<d)break;
ans[j]=d;
d++;
}
}
for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
}
320A - Magic Numbers | 1658A - Marin and Photoshoot |
514A - Chewbaсca and Number | 382A - Ksenia and Pan Scales |
734B - Anton and Digits | 1080A - Petya and Origami |
1642D - Repetitions Decoding | 1440A - Buy the String |
1658F - Juju and Binary String | 478A - Initial Bet |
981A - Antipalindrome | 365A - Good Number |
1204B - Mislove Has Lost an Array | 1409D - Decrease the Sum of Digits |
1476E - Pattern Matching | 1107A - Digits Sequence Dividing |
1348A - Phoenix and Balance | 1343B - Balanced Array |
1186A - Vus the Cossack and a Contest | 1494A - ABC String |
1606A - AB Balance | 1658C - Shinju and the Lost Permutation |
1547C - Pair Programming | 550A - Two Substrings |
797B - Odd sum | 1093A - Dice Rolling |
1360B - Honest Coach | 1399C - Boats Competition |
1609C - Complex Market Analysis | 1657E - Star MST |